package HomeWork.Question1;

import java.util.Scanner;

/*
有一汽车租赁公司出租轿车和客车，轿车租金800元/日，客车租金150元/日，并有折扣政策：
轿车租车日期7天及以上9折、30天及以上8折、150天及以上7折；客车租车日期3天及以上9折、7天及以上8折、30天及以上7折，150天及以上6折。
要求编制程序实现：用户利用键盘输入要租赁的车辆类型和租赁的天数；系统自动计算出租车费用（天数*日租金*折扣），并在屏幕上将租车费用显示出来。
编程要求：设计轿车类Car和客车类Bus；为了系统的可扩展性，设计一个抽象类车辆Vehicle作为两类车型的父类。
*/

class Car_Rent{
    public static void main(String[] args){
        Vehicle v = null;
        int days;
        try (Scanner sc = new Scanner(System.in)) {
            System.out.print("请选择你要租赁的车辆类型（客车、轿车）：");
            String type_car = sc.nextLine();
            if(type_car.equals("轿车")){
                v = new Car();
            }else if(type_car.equals("客车")){
                v = new Bus();
            }else{  
                System.out.println("输入错误！");
                return;
            }
            System.out.print("\n请选择你要租赁的天数：");
            days = sc.nextInt();
            if(days<=0){
                System.out.println("天数不能小于0！");
                return;
            }
        }
        System.out.printf("你需要支付租金：%.1f元\n",v.calPrice(days));
    }
}

abstract class Vehicle{
    protected float price;
    public abstract float calPrice(int days);
}

class Car extends Vehicle{
    public float calPrice(int days){
        if(days>=7 && days <30){
            price = days*800*0.9F;
        }else if(days>=30 && days <150){
            price = days*800*0.8F;
        }else if(days>=150){
            price = days*800*0.7F;
        }else{
            price = days*800F;
        }
        return price;   
    }
}

class Bus extends Vehicle{
    public float calPrice(int days){
        if(days>=3 && days <7){
            price = days*150*0.9F;
        }else if(days>=7 && days <30){
            price = days*150*0.8F;
        }else if(days>=30 && days <150){
            price = days*150*0.7F;
        }else if(days>=150){    
            price = days*150*0.6F;
        }else{
            price = days*150;
        }
        return price;
    }
}
